package org.tity.sql.code.entity.test;

import org.tity.sql.entity.EntitySet;
import org.tity.sql.data.Rcd;
import org.tity.sql.entity.Entity;
import org.tity.sql.entity.annotations.TableDesc;
import java.io.ObjectStreamClass;
import java.util.List;
import java.util.Arrays;
import org.tity.sql.entity.EntityStructure;
import org.tity.sql.entity.annotations.Indexes;
import org.tity.sql.entity.annotations.Index;
import org.tity.sql.meta.DBDataType;
import org.tity.sql.entity.annotations.ColumnDesc;
import org.tity.sql.dao.DAO;


/*
 * 此类代码为自动生成，请勿修改 !
 */

/**
 * 联合主键表
 * @author tity-code-builder-powered-by-lifangjie
 * @date 2020-06-05 10:40:33
 **/
@org.tity.sql.entity.annotations.Entity
@TableDesc( name = RelationTity.TABLE , comment = "联合主键表" )
public class RelationTity extends Entity<RelationTity> {

	/**
	 * serialVersionUID
	*/
	private static final long serialVersionUID  =  ObjectStreamClass.lookup(RelationTity.class).getSerialVersionUID();

	/**
	 * 表名
	*/
	public static final String TABLE = "test_relation_tity";

	/**
	 * 字段(数据库) bill_id , 单据号 , 单据号
	*/
	public static final String BILL_ID = "bill_id";

	/**
	 * 字段(数据库) owner_id , 所有者 , 所有者
	*/
	public static final String OWNER_ID = "owner_id";

	/**
	 * 字段(数据库) type , 类型 , 类型
	*/
	public static final String TYPE = "type";

	/**
	 * 全部字段集合,包括数据库和手动添加的
	*/
	public static final List<String> ALL_COLUMNS = Arrays.asList( BILL_ID , OWNER_ID , TYPE );

	/**
	 * 数据库字段集合
	*/
	public static final List<String> DB_COLUMNS = Arrays.asList( BILL_ID , OWNER_ID , TYPE );

	/**
	 * 附加字段集合
	*/
	public static final List<String> EXTRA_COLUMNS = Arrays.asList(  );

	/**
	 * 按照当前实体属性清单指定参数集
	*/
	public static final String PARAM_NAMES = "[$:allfields:org.tity.sql.code.entity.test.RelationTity:&]";

	/**
	 * 按照当前实体主键清单指定参数集
	*/
	public static final String PARAM_PK_NAMES = "[$:pkfields:org.tity.sql.code.entity.test.RelationTity:&]";

	/**
	 * 数据库中逻辑True的值
	*/
	private static final Object LOGIC_TRUE ="Y";

	/**
	 * 数据库中逻辑False的值
	*/
	private static final Object LOGIC_FALSE = "N";

	/**
	 * 实体结构解析
	*/
	public static EntityStructure getStructure() {
		return EntityStructure.get(RelationTity.class);
	}

	/**
	 * 构造函数(从数据库构建)
	*/
	public RelationTity(EntitySet ownerSet,Rcd rcd) {
		super(ownerSet,rcd);
		super.logicValues=new Object[] { LOGIC_TRUE , LOGIC_FALSE };
	}

	/**
	 * 构造函数(直接构建)
	*/
	public RelationTity() {
		super(null,null);
		super.logicValues=new Object[] { LOGIC_TRUE , LOGIC_FALSE };
	}

	/**
	 * 获取字段(数据库) bill_id 的值<br/>
	 * 单据号
	 * 
	 * @return 返回 bill_id 值
	 */
	@Indexes({
		@Index( name="PRIMARY" , unique = true , primary = true , order = 0) 
	})
	@ColumnDesc( isDBField=true , name=BILL_ID , nullable=false , table=TABLE , isPK=true , precision=10 , scale=0 , label="单据号" , comment="单据号" , internal=false , type=DBDataType.INTEGER )
	public Integer getBillId() {
		return this.getValue(BILL_ID,Integer.class);
	}

	/**
	 * 设置字段(数据库) bill_id 的值<br/>
	 * 单据号
	 * 
	 * @param value bill_id 值
	 */
	public RelationTity setBillId(Integer value) {
		super.setValue(BILL_ID,value);
		return this;
	}

	/**
	 * 获取字段(数据库) owner_id 的值<br/>
	 * 所有者
	 * 
	 * @return 返回 owner_id 值
	 */
	@Indexes({
		@Index( name="PRIMARY" , unique = true , primary = true , order = 1) 
	})
	@ColumnDesc( isDBField=true , name=OWNER_ID , nullable=false , table=TABLE , isPK=true , precision=10 , scale=0 , label="所有者" , comment="所有者" , internal=false , type=DBDataType.INTEGER )
	public Integer getOwnerId() {
		return this.getValue(OWNER_ID,Integer.class);
	}

	/**
	 * 设置字段(数据库) owner_id 的值<br/>
	 * 所有者
	 * 
	 * @param value owner_id 值
	 */
	public RelationTity setOwnerId(Integer value) {
		super.setValue(OWNER_ID,value);
		return this;
	}

	/**
	 * 获取字段(数据库) type 的值<br/>
	 * 类型
	 * 
	 * @return 返回 type 值
	 */
	@Indexes({
		@Index( name="PRIMARY" , unique = true , primary = true , order = 2) 
	})
	@ColumnDesc( isDBField=true , name=TYPE , nullable=false , table=TABLE , isPK=true , length=255 , label="类型" , comment="类型" , internal=false , type=DBDataType.STRING )
	public String getType() {
		return this.getValue(TYPE,String.class);
	}

	/**
	 * 设置字段(数据库) type 的值<br/>
	 * 类型
	 * 
	 * @param value type 值
	 */
	public RelationTity setType(String value) {
		super.setValue(TYPE,value);
		return this;
	}

	/**
	 * 生成并设置ID值
	*/
	@Override 
	public RelationTity generateId() {
		super.generateIdInternal(null);
		return this;
	}

	/**
	 * 通过指定的DAO，生成并设置ID值
	*/
	@Override 
	public RelationTity generateId(DAO dao) {
		super.generateIdInternal(dao);
		return this;
	}

}
